<?php
/**
 * Created by PhpStorm.
 * User: lenovo
 * Date: 2020/8/15
 * Time: 15:09
 */
require './vendor/autoload.php';
use QL\QueryList;
use QL\Ext\Chrome;


/**获取列表数据
 * @param $ql
 * @param $page
 */
 function getList($ql,$page){
     $url = 'https://online.nojima.co.jp/app/common/login/';
     try{
         $page->goto($url);
         echo  '等待登录'.PHP_EOL;
         $page->waitFor('#loginId');
         //如果catch没有捕获到，才会执行到这里
     }catch(Exception $e){
         echo  '进入登录页失败，请重启或者检测网址'.PHP_EOL;die;
     }

    // 这里故意设置一个很长的延长时间，让你可以看到chrome浏览器的启动
    $userName = 'linxq9318@icloud.com';
    $password = 'linianin5319';
    $page->type("input[name='loginId']",$userName);
    $page->type("input[name='password']",$password);
     try{
        $page->waitFor('#move_blockDoubleSubmitFlg');
         //点击登录
         $page->click("#move_blockDoubleSubmitFlg");
     }catch(Exception $e){
         echo  '登录错误'.PHP_EOL;die;
     }
     #这里等待登录成功
   #  $page->waitFor('.welcomepoint');
     $page->waitFor('.welcome');
     echo  '登录成功'.PHP_EOL;
     #进入要买的界面
     $url = 'https://online.nojima.co.jp/category/114/?searchCategoryCode=114&mode=image&pageSize=60&currentPage=1&alignmentSequence=8&searchDispFlg=true&discontinuedFlg=1?defaultpage_SubHeader';
     $page->goto($url);
     echo  '进入二手商品列表'.PHP_EOL;
     $page->waitFor('div.commoditylistitem');
     #获取列表
     //获取结果
     $html = $page->content();
     //用jquery选择器抽取结果
     $ql = QueryList::html($html);
     echo '开始获取html';
     #列表结果
     $rules = array(
        'title'=>['.textOverflowShohinmei','text'],//标题
         'url'=>['div.Cmdty_ThumbImg_Cell a','href'],//跳转网址
     );
     $range = 'div.commoditylistitem .shouhinlist';
     $rt = $ql->rules($rules)->range($range)->query()->getData();
     $urlList =  $rt->all();
     echo  '抓取到商品，开始遍历'.PHP_EOL;
     foreach ($urlList as $buyUrl){
         $buyUrl = 'https://online.nojima.co.jp'.$buyUrl['url'];
            echo "正在买：{$buyUrl}".PHP_EOL;

         $page->goto($buyUrl);
         $page->waitFor('.hassoumeyasu2');
            #加购物车
         $html = $page->content();
         //用jquery选择器抽取结果
         $ql = QueryList::html($html);
         $kucun = $ql->find('.hassoumeyasu2')->text();
         $errorArr = ['完売御礼'];
         if(in_array($kucun ,$errorArr)){
             echo  '库存有错，为：'.$kucun.'，系统自动跳过'.PHP_EOL;continue;
         }
         echo  '库存为：'.$kucun.'，系统自动下单'.PHP_EOL;
         $page->waitFor('div.shouhincart-list a');
         $page->click("div.shouhincart-list a");
           #购买
         echo  '下单'.PHP_EOL;
         $page->waitFor('div.shouhinaddcartgamen-list a');
         $page->click("div.shouhinaddcartgamen-list a");

           #确定地址等信息
         echo  '确定地址'.PHP_EOL;
         $page->waitFor('div.completeinfo-list a');
         $page->click("div.completeinfo-list a");

         #选择支付
         echo  '选择、确定支付'.PHP_EOL;
         $page->waitFor('#paymentMethodCode_10122');
         $page->click("#paymentMethodCode_10122");
         $page->click("div.cartjsp-right a");
         
         #选择同意
         echo  '同意条款'.PHP_EOL;
       #  echo '当前网址：'.$page->url().PHP_EOL;
         #$page->waitFor('#consentCheck');
        # $page->click("#consentCheck");
         #$page->click("#okButton");
        try{
            $page->waitFor('#consentCheck');
             $page->click("#consentCheck");
            $page->click("#okButton");
         }catch (Exception $e){
             echo $e->getMessage().PHP_EOL;
             echo '本单跳转支付出错，自动跳过'.PHP_EOL;
             continue;
         }
        /* try{
            sleep(10);
             echo '等待10秒，查看支付页面'.PHP_EOL;
            while(strstr($page->url(), 'online.nojima.co.jp')==false){
                sleep(1);
            }
         }catch (Exception $e){
             echo $e->getMessage().PHP_EOL;
             echo '本单支付出错，自动跳过'.PHP_EOL;
             continue;
         }*/
         #获取当前域名，直到是online.nojima.co.jp，继续下一个任务
         echo '本单结束，继续下一单'.PHP_EOL;
         sleep(5);
     }
     echo '下单执行结束'.PHP_EOL;

}

/**
 * 自动切换ip
 */
function  changeIp(  $page){
    $url = 'http://192.168.100.1/';
    $page->goto($url);
    $page->keyboard()->press('Enter');

}

#抓取网址
$ql = QueryList::getInstance();
// 注册插件，默认注册的方法名为: chrome
$ql->use(Chrome::class);
// 或者自定义注册的方法名
$ql->use(Chrome::class,'chrome');

$text = $ql->chrome(function ($page,$browser)use($ql) {
    #changeIp($page);
    #sleep(20);
    getList($ql,$page);
    //如果有需要，可以把$rt入库，以及做其他操作
    sleep(10);
    $browser->close();
    // 返回值一定要是页面的HTML内容
    # return $html;
},[
    'timeout' => 6000,
    'ignoreHTTPSErrors' => true,
    'headless' => false, // 启动可视化Chrome浏览器,方便调试
    'devtools' => false, // 打开浏览器的开发者工具
    'fullPage'=> true,
])->find('h1')->text();